package Hospital.domain;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import javax.naming.LimitExceededException;
import javax.swing.text.StyledEditorKit.ItalicAction;
public class Administrador extends Persona {

	private ONG ong;
	
	private List<Actividades> actividadesAdministradas;
	
	private List<Pedido> pedidosAdministracion;

    private static Administrador sadmin;
	
	
	public Administrador ()
	{
        actividadesAdministradas = new LinkedList<Actividades>();
        Actividades a1 = new Actividades();
        Actividades a2 = new Actividades();
        Actividades a3 = new Actividades();

        a1.setIdentificador("1");
        a1.setNombre("Visitas");
        a1.setDescripcion("Visitar a los niños en fin de semana");
        a1.setLugar("Hospital a");
        a1.setFecha("1-1-09");
        a1.setHora("12:00");
        a1.setEnfermedad("Leves");
        a1.setTotalPlazas(20);
        List<String> h = new LinkedList<String>();
        h.add("13:00");
        Voluntario v11 = new Voluntario("Pepe", "Lopez", "85463872", "a", h, a1);
        Voluntario v12 = new Voluntario("Pepa", "Gomez", "85487224", "b", h, a1);
        List vol1 = new LinkedList();
        a1.setVoluntarios(v11);
        a1.setVoluntarios(v12);
        

        a2.setIdentificador("2");
        a2.setNombre("Paseo con niños");
        a2.setDescripcion("Salir de paseo con los niños");
        a2.setLugar("Hospital a");
        a2.setFecha("2-1-09");
        a2.setHora("10:00");
        a2.setEnfermedad("Motores");
        a2.setTotalPlazas(10);
        
        List<String> h2 = new LinkedList<String>();
        h.add("15:00");
        Voluntario v21 = new Voluntario("Mario", "Garcia", "85467642", "b", h, a2);
        Voluntario v22 = new Voluntario("Maria", "Gascon", "48722534", "a", h, a2);        
        List vol2 = new LinkedList();
        a2.setVoluntarios(v21);
        a2.setVoluntarios(v22);


        a3.setIdentificador("3");
        a3.setNombre("CuentaCuentos");
        a3.setDescripcion("Contar cuentos a los niños");
        a3.setLugar("Hospital b");
        a3.setFecha("1-2-09");
        a3.setHora("18:00");
        a3.setEnfermedad("todos");
        a3.setTotalPlazas(2);

        List<String> h3 = new LinkedList<String>();
        h.add("18:00");
        Voluntario v31 = new Voluntario("Luis", "Mota", "85472422", "a", h3, a3);
        Voluntario v32 = new Voluntario("Luisa", "Motos", "85285274", "c", h3, a3);
        List vol3 = new LinkedList();
        a3.setVoluntarios(v11);
        a3.setVoluntarios(v12);
        
        actividadesAdministradas.add(a1);
        actividadesAdministradas.add(a2);
        actividadesAdministradas.add(a3);
        
	}
    public static Administrador getInstance()
    {
        if (sadmin == null)
        {
            sadmin = new Administrador();
            // depuracion
            System.out.println("Se ha creado el admninistrador");
        }
        System.out.println("Se ha devuelto la instancia del admninistrador");
        return sadmin;
       
    }
    
    public void resetearVotos()
    {
    	Iterator<Actividades> itac = actividadesAdministradas.iterator();
    	
		while (itac.hasNext())
		{
			Actividades cac = itac.next();
			List<Voluntario> voluntarios = cac.getVoluntarios();
			Iterator<Voluntario> itvo = voluntarios.iterator();
			while (itvo.hasNext())
			{
				Voluntario cvol = itvo.next();
				cvol.setCalificacion(0);
			}
		}
    }
    public List<Pedido> asignaActividadesPedidos(Actividades actividad, Pedido p)
    {
		
		pedidosAdministracion.add(p);
    	actividad.setPedidoIndi(p);
    	return pedidosAdministracion;
    }

	public List<Actividades> getActividadesAdministradas() {
	
		return actividadesAdministradas;
	
	}

	public void setActividadesAdministradas(
			List<Actividades> actividadesAdministradas) {
		this.actividadesAdministradas = actividadesAdministradas;
	}
	public boolean asignaVoluntariosActividades(Voluntario v, String aid)
	{
		//buscar la actividad
		boolean encontrada = true;
		boolean res = false;
		Actividades ca = new Actividades();
		List avoluntarios = v.getActividades();
		Iterator itva = avoluntarios.iterator();
		while (itva.hasNext() && encontrada)
		{
			ca = (Actividades)itva.next();
			String ida = ca.getIdentificador();
			if (ida.equals(aid))
			{
				encontrada = false;
			}
		}
		if (ca.getEnfermedad().equals(v.getPreferencias()))
			{
				if (ca.getLugar().equals(v.getZonaPreferencia()))
				{
					if(ca.getFecha().equals(v.getDiasDisponibles()))
					{
						if(ca.getHora().equals(v.getHorarioPreferencia()))
						{
							ca.setPlazasOcupadas();
							res = true;
						}
					}
				}
			}
			
		
		return res;
	}
    public List<Voluntario> mostrarVoluntarioActividad(String ida)
    {
        //depuracion
    	System.out.println("se ha llamado al metodo mostrarvoluntariosactividad");
    	System.out.println("el parametro es     "+ida);
    	Iterator ita = actividadesAdministradas.iterator();
        Actividades ca = new Actividades();
        List l = new LinkedList();
        //depuracion
        System.out.println("Se ha creado la lista");

        while (ita.hasNext())
        {
            ca = (Actividades)ita.next();
            System.out.println("Se obtiene una acticidad");
            String id = ca.getIdentificador();
                            
            
            if (ida.equals(id))
            {
            	System.out.println("llegan a ser iguales");
            	l = ca.getVoluntarios();
            }
            
            
        }
        return l;
        

    }
}

